package com.game.Maze.Renderers;

import java.util.ArrayList;
import java.util.Iterator;

import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.game.Maze.Objects.IMaze;
import com.game.Maze.Objects.IRoom;

/**
 * Объект, отображающий лабиринт
 * 
 */
public class MazeRenderer implements IRenderer
{
  // Лабиринт
  private IMaze m_Maze;
  
  // Список рендеров
  private ArrayList<IRenderer> m_Renderes = new ArrayList<IRenderer>();
  
  /**
   * Создает рендерер лабиринта
   * @param aMaze интерфейс для получения информации о лабиринте {@link IMaze}
   */
  public MazeRenderer(IMaze aMaze)
  {
    m_Maze = aMaze;
  }

  @Override
  public void create(int aColumn, int aRow)
  {
    // TODO может быть сделать фабрику для создания рендеров
    
    // Создаем рендеры комнат
    for (int column = 0; column < m_Maze.size(); column++)
      for (int row = 0; row < m_Maze.size(); row++)
      {
        IRoom room = m_Maze.room(column, row);
        IRenderer roomRenderer = new RoomRenderer(room);
        roomRenderer.create(column, row);
        m_Renderes.add(roomRenderer);
      }
  }

  @Override
  public void render(SpriteBatch batch)
  {
    Iterator<IRenderer> renderes = m_Renderes.iterator();
    while (renderes.hasNext())
      renderes.next().render(batch);
  }
}
